﻿using System;
using Runtime.Services.Battle;
using Runtime.Services.Battle.Entity;

namespace Runtime.Services.BattleAttack {

    /// <summary>
    /// 战斗攻击者
    /// </summary>
    public interface IDFR_BattleAttacker {

        /// <summary>
        /// 实例ID
        /// </summary>
        DFR_BattleEntityInstanceID EntityInstanceID { get; }

        /// <summary>
        /// 地图位置
        /// </summary>
        DFR_BattleMapPosition MapPosition { get; }

        /// <summary>
        /// 总计发起攻击的次数
        /// </summary>
        IReadOnlyIntData LaunchCount { get; }

        /// <summary>
        /// 命中方式
        /// </summary>
        DFR_BattleAttackHit AttackHit { get; }

        /// <summary>
        /// 攻击速度的变化百分比
        /// </summary>
        F64 AttackSpeedFinalFactor { get; }

        /// <summary>
        /// 按敌方血量百分比造成伤害
        /// </summary>
        IDFR_ReadOnlyBattleData DamageHPMax { get; }

        /// <summary>
        /// 按敌方当前血量百分比造成伤害
        /// </summary>
        IDFR_ReadOnlyBattleData DamageHP { get; }

        /// <summary>
        /// 按原伤害百分比造成伤害
        /// </summary>
        IDFR_ReadOnlyBattleData Damage { get; }

        /// <summary>
        /// 攻击力
        /// </summary>
        IDFR_ReadOnlyBattleData Attack { get; }

        /// <summary>
        /// 攻击精英额外加成
        /// </summary>
        IDFR_ReadOnlyBattleData AttackBossAdditional { get; }

        /// <summary>
        /// 攻击速度
        /// </summary>
        IDFR_ReadOnlyBattleData AttackSpeed { get; }

        /// <summary>
        /// 暴击率
        /// </summary>
        IDFR_ReadOnlyBattleData Critical { get; }

        /// <summary>
        /// 暴击伤害倍率
        /// </summary>
        IDFR_ReadOnlyBattleData CriticalPower { get; }
    }
}
